package com.wxzhou.wangzhuan.dto.config;

import java.math.BigDecimal;
import java.util.HashMap;
import java.util.Map;

/**
 * 默认系统配置
 * 全局配置，支持同一个广告id单设备当日拉取的最大次数配置。配合api接口做频率控制，0表示不限制，保存配置后打入全局缓存。
 * 配置同一个广告id单个设备的拉取的间隔时间，精确到毫秒，以服务器时间为准，0表示不限制。默认值5000毫秒（即间隔5秒），针对不同的广告类型统一配置。
 */
public class SystemConfigDto {

    /**
     * 每个app每天最大拉取广告次数（单渠道包、单设备），0表示不限制
     */
    private Integer dayMaxAdCount;

    /**
     * 每个app每天最大拉取广告次数（单设备）,0表示不限制
     */
    private Integer dayMaxAdCountOfDevice;

    /**
     * 每日场景拉取次数配置，key表示sense的string值，比如10。value表示次数
     * 如果匹配不到，表示不限制
     */
    private Map<String,Integer> dayMaxAdCountOfSenses = new HashMap<>();

    /**
     * 场景拉取次数时间限制，key表示sense的string值，比如10。value表示时间间隔毫秒，如果不存在，则默认使用interTime的值
     */
    private Map<String,Integer> dayMaxAdCountOfInterTime = new HashMap<>();

    /**
     * 全局默认拉取广告时间间隔，0表示不限制。默认值5000毫秒（即间隔5秒）
     */
    private Integer interTime;

    //用户到手的收益比例
    private BigDecimal adPercent = BigDecimal.ZERO;

    //千次阅读给多少
    private Integer readerEcpm = 0;

    //全局密钥配置
    private String securityKey;

    //开启加密的情况下才启用全局密钥。
    private boolean enabledSecurity;

    private BigDecimal adMaxAmount;

    public SystemConfigDto() {
    }

    public Integer getDayMaxAdCount() {
        return dayMaxAdCount;
    }

    public void setDayMaxAdCount(Integer dayMaxAdCount) {
        this.dayMaxAdCount = dayMaxAdCount;
    }

    public Integer getInterTime() {
        return interTime;
    }

    public void setInterTime(Integer interTime) {
        this.interTime = interTime;
    }

    public BigDecimal getAdPercent() {
        return adPercent;
    }

    public void setAdPercent(BigDecimal adPercent) {
        this.adPercent = adPercent;
    }

    public String getSecurityKey() {
        return securityKey;
    }

    public void setSecurityKey(String securityKey) {
        this.securityKey = securityKey;
    }

    public boolean isEnabledSecurity() {
        return enabledSecurity;
    }

    public void setEnabledSecurity(boolean enabledSecurity) {
        this.enabledSecurity = enabledSecurity;
    }

    public BigDecimal getAdMaxAmount() {
        return adMaxAmount;
    }

    public void setAdMaxAmount(BigDecimal adMaxAmount) {
        this.adMaxAmount = adMaxAmount;
    }

    public Integer getDayMaxAdCountOfDevice() {
        return dayMaxAdCountOfDevice;
    }

    public void setDayMaxAdCountOfDevice(Integer dayMaxAdCountOfDevice) {
        this.dayMaxAdCountOfDevice = dayMaxAdCountOfDevice;
    }

    public Map<String, Integer> getDayMaxAdCountOfSenses() {
        return dayMaxAdCountOfSenses;
    }

    public void setDayMaxAdCountOfSenses(Map<String, Integer> dayMaxAdCountOfSenses) {
        this.dayMaxAdCountOfSenses = dayMaxAdCountOfSenses;
    }

    public Map<String, Integer> getDayMaxAdCountOfInterTime() {
        return dayMaxAdCountOfInterTime;
    }

    public void setDayMaxAdCountOfInterTime(Map<String, Integer> dayMaxAdCountOfInterTime) {
        this.dayMaxAdCountOfInterTime = dayMaxAdCountOfInterTime;
    }

    public Integer getReaderEcpm() {
        return readerEcpm;
    }

    public void setReaderEcpm(Integer readerEcpm) {
        this.readerEcpm = readerEcpm;
    }
}